﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SumerCoreDevOps.Application.Dtos.Responses.Auth
{
    /// <summary>
    /// 登录接口响应模型，包含认证令牌和用户基本信息
    /// </summary>
    public class LoginResponse
    {
        /// <summary>
        /// 访问Token（用于API请求认证）
        /// </summary>
        /// <example>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkiLCJuYW1lIjoiYWRtaW4ifQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c</example>
        [Description("JWT格式的访问令牌，请求需要认证的API时需携带")]
        public string AccessToken { get; set; } = null!;

        /// <summary>
        /// 刷新Token（用于获取新的访问Token）
        /// </summary>
        /// <example>8f7e6d5c-4b3a-2s1d-0f9g-8h7j6k5l4m3n</example>
        [Description("用于在访问令牌过期后获取新令牌的凭证，有效期通常长于访问令牌")]
        public string RefreshToken { get; set; } = null!;

        /// <summary>
        /// Token类型（通常为 Bearer）
        /// </summary>
        /// <example>Bearer</example>
        [Description("令牌类型，遵循OAuth 2.0规范，默认值为Bearer")]
        public string TokenType { get; set; } = "Bearer";

        /// <summary>
        /// Token过期时间（秒）
        /// </summary>
        /// <example>3600</example>
        [Description("访问令牌的有效期（单位：秒），通常为3600秒（1小时）")]
        public int ExpiresIn { get; set; }

        /// <summary>
        /// 用户信息
        /// </summary>
        [Description("登录用户的基本信息，包含ID、用户名、角色权限等")]
        public UserInfo User { get; set; } = null!;
    }
}
